home *** CD-ROM | disk | FTP | other *** search
-
- var gIsEdit = false;
- var gName = "";
- var gUrl = "";
- var gList;
- var gListDB;
- var gProxyNameField;
- var gProxyUrlField;
-
- function initVals(){
-
- //Set Globals
- gList = opener.document.getElementById('proxy-list');
- gListDB = opener.document.getElementById('proxy-list-popup').database;
- gProxyNameField = document.getElementById('proxy-name');
- gProxyUrlField = document.getElementById('proxy-url');
-
- if(window.arguments.length > 0 && window.arguments[0] == "edit"){
-
- //Set Globals
- gIsEdit = true;
- gName = gList.selectedItem.label;
- gUrl = gList.selectedItem.value;
-
- //Fill
- gProxyNameField.value = gName;
- gProxyUrlField.value = gUrl;
- proxy-list-popup
- }
- }
-
- function saveProxy(){
-
- //Init
- var oProxyElem = null;
- var oSource = null;
- var oDs = gListDB.GetDataSources();
- var oRdf = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService();
- oRdf = oRdf.QueryInterface(Components.interfaces.nsIRDFService);
- var oRoot = oRdf.GetResource(gRdfRoot);
- var oRdfC = Components.classes["@mozilla.org/rdf/container;1"].createInstance();
- oRdfC = oRdfC.QueryInterface(Components.interfaces.nsIRDFContainer);
-
-
- //Observe
- var observer = {
- onAssert : function(ds, source, predicate, target){alert('assert');},
- onUnassert : function(ds, source, predicate, target){alert('unassert');},
- onChange : function(ds, source, predicate, oldTarget, newTarget){alert('change');},
- onMove : function(ds, oldSource, newSource, predicate, target){alert('move');},
- onBeginUpdateBatch : function(ds){alert('beginUpdateBatch');},
- onEndUpdateBatch : function(ds){alert('endUpdateBatch');}
- };
-
- //Validation
- //Empty
- if(gProxyNameField.value == ""){
- alert("The Proxy Name field cannot be empty");
-
- gProxyNameField.focus();
- gProxyNameField.value = gName;
- gProxyNameField.setSelectionRange(0, gProxyNameField.textLength);
-
- return false;
- }
- else if(gProxyUrlField.value == ""){
- alert("The Proxy URL field cannot be empty");
-
- gProxyUrlField.focus();
- gProxyUrlField.value = gUrl;
- gProxyUrlField.setSelectionRange(0, gProxyUrlField.textLength);
-
- return false;
- }
- //Special Chars
- else if(!allowedChars(gProxyNameField.value)){
- alert("The name field contains invalid characters");
- return false;
- }
- else if(!allowedChars(gProxyUrlField.value)){
- alert("The url field contains invalid characters");
- return false;
- }
-
- try{
-
- //Get Element to edit
- while(oDs.hasMoreElements()){
- oSource = oDs.getNext();
- oSource = oSource.QueryInterface(Components.interfaces.nsIRDFDataSource);
-
- if(oSource.URI == gRdfFile){
-
- oSource.AddObserver(observer);
-
- oRdfC.Init(oSource, oRoot);
- var aElements = oRdfC.GetElements();
-
- while(aElements.hasMoreElements()){
- oProxy = aElements.getNext();
- oProxy = oProxy.QueryInterface(Components.interfaces.nsIRDFResource);
-
- var oProp = oRdf.GetResource(gRdfNodeName);
- var oTrgt = oSource.GetTarget(oProxy, oProp, true);
-
- if(oTrgt instanceof Components.interfaces.nsIRDFLiteral){
- //Correct Element
- if(oTrgt.Value == gName){
- oProxyElem = oProxy;
- }
- //Does the New Name Already Exists?
- else if((!gIsEdit || simplify(gName) != simplify(gProxyNameField.value))
- && simplify(oTrgt.Value) == simplify(gProxyNameField.value)){
- alert("That name already exists");
- return;
- }
- }
- }
-
- break;
- }
- }
-
- //Add or Edit
- if(!gIsEdit || (gIsEdit && oProxyElem != null)){
- var oNewName = oRdf.GetLiteral(gProxyNameField.value);
- var oNewUrl = oRdf.GetLiteral(gProxyUrlField.value);
-
- //Edit
- if(gIsEdit){
- alert(oSource.URI)
- var oOldName = oRdf.GetLiteral(gName);
- var oOldUrl = oRdf.GetLiteral(gUrl);
-
- //Name
- var oProp = oRdf.GetResource(gRdfNodeName);
- oSource.Change(oProxyElem, oProp, oOldName, oNewName);
-
- //Url
- var oProp = oRdf.GetResource(gRdfNodeProxy);
- oSource.Change(oProxyElem, oProp, oOldUrl, oNewUrl);
-
- alert("Proxy Info Changed");
- }
- //Add
- else{
- var oProxyElem = oRdf.GetResource(gRdfRoot + "/" + simplify(gProxyUrlField.value));
- var oProxyName = oRdf.GetLiteral(gName);
- var oProxyUrl = oRdf.GetLiteral(gUrl);
-
- //Name
- var oProp = oRdf.GetResource(gRdfNodeName);
- oSource.Assert(oProxyElem, oProp, oProxyName, true);
-
- //Url
- var oProp = oRdf.GetResource(gRdfNodeProxy);
- oSource.Assert(oProxyElem, oProp, oProxyUrl, true);
-
- alert("Proxy Added");
- }
- }
- else{
- alert("Could not access that proxy's data.");
- }
-
- }catch(e){
- alert("An error occurred\n("+ e +")");
- return;
- }
-
- return true;
- }
-
- // Used to test strings
- // + converts space to underscore
- // + and converts to lowercase
- function simplify(str){
- str = str.replace(/\s{2, }/g, " ");
- str = str.replace(/\s/g, "_");
- str = str.toLowerCase();
- return str;
- }
-
- //Has Special Chars
- // + returns true if it only
- // + contains allowed chars
- function allowedChars(str){
- var regex = new RegExp("[\\s\\.a-zA-Z0-9_]", "g");
- return regex.test(str);
- }
-